In the United States and elsewhere, computers have become part of people's everyday lives, both in the workplace and in personal endeavors. This is because a general-purpose computer can be programmed to run a variety of software programs each providing different processing and networking functions. Computer programmers develop computer code. Some companies hire large numbers of computer programmers to develop code on the company's behalf.
One approach is to hire large numbers of programmers and develop software “in house.” While this affords significant control over the programming staff; finding, hiring, and maintaining such a staff can be cost prohibitive. Furthermore, as individual programmers leave the company, much of the technical and industrial knowledge is also lost. Alternatively, many companies “outsource” their programming through consulting firms, or contract employees. This approach relieves the company of the burdens of managing individual employees, however the quality of the work is often suspect, and the challenges of integrating work from numerous outside vendors can be significant.